import csv
import os


def clean_and_merge_csv(source_dir, output_file):
    """
    遍历指定目录下的所有CSV文件，删除第一列存在缺失值的行，并将有效数据合并到新文件。

    Args:
        source_dir (str): 包含原始CSV文件的目录路径。
        output_file (str): 清洗并合并后CSV文件的保存路径。
    """
    try:
        # 获取所有CSV文件路径
        csv_files = [os.path.join(source_dir, f) for f in os.listdir(source_dir) if f.endswith('.csv')]

        if not csv_files:
            print(f"在 '{source_dir}' 目录下没有找到任何CSV文件。")
            return

        header_written = False

        with open(output_file, 'w', newline='', encoding='utf-8') as outfile:
            writer = csv.writer(outfile)

            for file_path in csv_files:
                with open(file_path, 'r', encoding='utf-8') as infile:
                    reader = csv.reader(infile)

                    header = next(reader)  # 读取表头

                    # 仅在第一次处理文件时写入表头
                    if not header_written:
                        writer.writerow(header)
                        header_written = True

                    row_count = 0
                    cleaned_count = 0

                    for row in reader:
                        row_count += 1
                        # 检查第一列（索引为0）是否有值，并去除首尾空格
                        if row and row[0].strip():
                            writer.writerow(row)
                            cleaned_count += 1

                    print(f"文件 '{os.path.basename(file_path)}' 共 {row_count} 行数据。")
                    print(f"已清洗并合并 {cleaned_count} 行有效数据。")

        print(f"\n所有有效数据已成功合并到 '{output_file}'。")

    except FileNotFoundError:
        print(f"错误: 目录 '{source_dir}' 不存在。请检查路径是否正确。")
    except Exception as e:
        print(f"在处理文件时发生错误: {e}")


# 定义输入目录和输出文件路径
source_directory = "md-结构化数据"
output_csv = "md-merged-data.csv"

# 运行数据清洗和合并函数
if __name__ == "__main__":
    clean_and_merge_csv(source_directory, output_csv)
